package net.sh.dpinfrastructure.support.openapi;


/**
 * 
 * api 
 * 
 * @version 1.0
 * @since JDK1.7
 * @author shaohui
 * @company 上海朝阳永续信息技术有限公司
 * @copyright (c) 2017 SunTime Co'Ltd Inc. All rights reserved.
 * @date 2017年2月10日 下午3:55:24
 */
public interface DPApiExecuteListener<T> {
    
    /**
     * 
     * api调用前执行
     * @param context
     * 
     * 
     * @author shaohui
     * @date 2017年2月10日 下午4:20:04
     */
    void beforeExecute(DPApiContext context);
    
    /**
     * 
     * api调用后执行（包括抛出异常后）
     * @param context
     * 
     * 
     * @author shaohui
     * @date 2017年2月10日 下午4:20:04
     */
    void afterExecute(DPApiContext context);

    /**
     * 
     * api 成功调用后执行
     *
     * @param context
     * @param result
     * 
     * @author shaohui
     * @date 2017年2月10日 下午4:21:31
     */
    void onSuccess(DPApiContext context, T result);
    
    /**
     * 
     * api 发生错误时执行
     *
     * @param context
     * @param t
     * 
     * @author shaohui
     * @date 2017年2月10日 下午4:21:46
     */
    void onException(DPApiContext context, Throwable t);
    
}
